//给你一个正整数 n ，生成一个包含 1 到 n2 所有元素，且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 
//
// 
//
// 示例 1： 
//
// 
//输入：n = 3
//输出：[[1,2,3],[8,9,4],[7,6,5]]
// 
//
// 示例 2： 
//
// 
//输入：n = 1
//输出：[[1]]
// 
//
// 
//
// 提示： 
//
// 
// 1 <= n <= 20 
// 
// Related Topics 数组 矩阵 模拟 
// 👍 532 👎 0


package leetcode.editor.cn;
public class SpiralMatrixIi{
  public static void main(String[] args) {
       Solution solution = new SpiralMatrixIi().new Solution();
       int n = 3;
       int[][] result = solution.generateMatrix(n);
       for (int i=0; i<result.length; i++){
           for (int j=0; j<result[0].length; j++) {
               System.out.println(result[i][j]);
           }
       }
  }
  //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int[][] generateMatrix(int n) {
        int[][] result = new int[n][n];
        int left = 0;
        int right = n-1;
        int top = 0;
        int bottom = n-1;
        int rSize = n*n;
        int i=1;
        while (i<=rSize) {
            //向右填充
            for (int j = left; j <= right; j++) {
                result[top][j] = i;
                i++;
            }
            top++;
            //向下填充
            for (int j = top; j <= bottom; j++) {
                result[j][right] = i;
                i++;
            }
            right--;
            //向左填充
            for (int j = right; j >= left; j--) {
                result[bottom][j] = i;
                i++;
            }
            bottom--;
            //向上填充
            for (int j = bottom; j >= top; j--) {
                result[j][left] = i;
                i++;
            }
            left++;
        }
        return result;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}